package com.woniuxy.dao;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.woniuxy.entity.Coach;
import com.woniuxy.entity.FreeTime;
import com.woniuxy.entity.MyStudent;
import com.woniuxy.entity.Order;
import com.woniuxy.entity.Relationship;
import com.woniuxy.entity.Signing;
import com.woniuxy.entity.User;
import com.woniuxy.entity.Venue;

@Mapper
public interface CoachDao {

	/**
	 * 通过教练id查询该教练
	 *
	 * @param cid
	 * @return
	 * @author 王敞
	 */
	public Coach findCoachByCid(int cid);

	/*
	 * 查找所有的教练
	 */
	public List<Coach> findCoach();

	/*
	 * 注册时添加基本账户密码 返回1为成功，返回0为失败
	 */
	public void addCoach(Coach coach);

	/*
	 * 通过教练账号查询教练信息
	 */
	public Coach findCoachByCname(String cname);

	/*
	 * 通过手机号查询教练信息
	 */
	public Coach findCoachByPhoneNumber(String phone);

	/*
	 * 完善教练详情 返回1为成功，返回0为失败
	 */
	public int updateCoachInformation(Coach coach, int cid);

	/**
	 * 按条件查询教练
	 *
	 * @param condition
	 *            查询条件
	 * @return
	 */
	List<Coach> findCoachByCondition(Coach condition);

	/**
	 * 按条件查询教练 ,不分页
	 * 
	 * @param condition
	 *            查询条件
	 * @return
	 */
	List<Coach> findCoachByConditionNoPage(Coach condition);

	/**
	 * 根据id查教练
	 * 
	 * @param cid
	 *            教练id
	 * @return 教练或null
	 */
	Coach findCoachById(int cid);

	/*
	 * 修改完善地址
	 */
	public int updateAddressByCid(String address, int cid, BigDecimal longitude, BigDecimal latitude);

	 //修改头像
    public int updateAvatarByCid(String avatar,int cid);

	/*
	 * 添加我的学生
	 */
	public int addMyStudent(MyStudent myStudent);

	/*
	 * 查询是否是我的学生
	 */
	public MyStudent selectMyStudent(MyStudent myStudent);

	/*
	 * 增加空闲时间
	 */
	public int addFreetimeByCid(int cid, String day, String when);

	/*
	 * 判断空闲时间是否存在
	 */
	public FreeTime isFreetimeByCid(int cid, String day, String when);

	/*
	 * 查询当前教练空闲时间表 分页查询
	 */
	public List<FreeTime> findFreeTime(int index, int pageSize, int cid);

	/*
	 * 查询当前用户关注人的总条数
	 */
	public int getNumsOfFreeTime(int cid);

	/*
	 * 添加银行卡,通过当前的教练账户
	 */
	public int insertBankCard(Coach coach);

	/*
	 * 取款
	 */
	public int updateMoney(Coach coach);

	/*
	 * 重置密码
	 */
	public int updatePwd(int cid, String pwd);

	/*
	 * 查询当前用户关注用户信息 分页查询
	 */
	public List<Relationship> getByPage(int index, int pageSize, int cid);

	/*
	 * 查询当前用户关注人的总条数
	 */
	public int getNumsOfRelationship(int cid);

	/*
	 * 添加教练关注到关注表
	 */
	public int addRelationship(Relationship relationship);

	// 根据教练id查看签约场馆 分页查询
	public List<Signing> getVenueByPage(int index, int pageSize, int cid);

	// 查询当前签约总场馆数
	public int getCountOfVenue(int cid);

	// 根据教练id查看签约学员 分页查询
	public List<Order> getUserByPage(int index, int pageSize, int cid);

	// 查看当前总签约学员
	public int getCountOfUser(int cid);

	// 将信息表中签约邀请更改状态
	public int changeRmStatus(int sender, int target, int reply);

	// 查看a账号是否关注b账号 fan为关注者id,follow为被关注者
	public int judgeRelationship(int fan, int followed);
	

	// 教练关注list
	public List<Integer> getRelationship(int cid);

	// 根据姓名模糊查询教练账号信息
	public List<Coach> findCoachByName(String cname);

	// 根据姓名模糊查询教练账号信息
	public List<Venue> findVenueByName(String vname);

	// 根据姓名模糊查询教练账号信息
	public List<User> findUserByName(String uname);

}


